package com.kk.transactional;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;

import java.util.Collections;

//TIP 要<b>运行</b>代码，请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {
    public static void main(String[] args) {
        // 数据库配置
        String url = "jdbc:mysql://192.168.101.105:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "qaq123..";
        // 作者信息
        String author = "little_lunatic";
        // 包名配置
        String parentPackage = "com.kk";
        // 模块名
        String moduleName = "transactional";
        // 表名，多个表用逗号分隔
        String tables = "order,person";
        // 文件保存路径
        String outPath = "/spring-transactional/src/main";


        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author(author) // 设置作者
                            .outputDir(System.getProperty("user.dir") + outPath + "/java") // 指定输出目录
                            .disableOpenDir(); // 禁止打开输出目录
                })
                .packageConfig(builder -> {
                    builder.parent(parentPackage) // 设置父包名
                            .moduleName(moduleName) // 设置模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + outPath + "/resources/mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tables) // 设置需要生成的表名
                            .addTablePrefix("t_", "sys_") // 设置过滤表前缀
                            .entityBuilder()
//                            .superClass(parentPackage + "." + moduleName + ".entity.BaseEntity") // 设置公共实体类
                            .enableLombok()
                            .logicDeleteColumnName("deleted")
                            .versionColumnName("version")
                            .enableTableFieldAnnotation()
                            .mapperBuilder()
                            .enableBaseResultMap()
                            .serviceBuilder()
                            .superServiceClass("com.baomidou.mybatisplus.extension.service.IService")
                            .superServiceImplClass("com.baomidou.mybatisplus.extension.service.impl.ServiceImpl");
                })
                .templateEngine(new VelocityTemplateEngine()) // 设置引擎模板
                .execute();
    }
}